home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1996 #6 / Amiga Plus CD - 1996 - No. 06.iso / pd / programmierung / proasm / routines / structs.r < prev    next >
Text File  |  1993-11-12  |  7KB  |  358 lines

  1.  
  2. ;---;  structs.r  ;------------------------------------------------------------
  3. *
  4. *    ****    STRUCTURE MACROS    ****
  5. *
  6. *    Author        Stefan Walter
  7. *    Add. Coding    Daniel Weber
  8. *    Version        1.12
  9. *    Last Revision    25.07.93
  10. *    Identifier    stc_defined
  11. *       Prefix        stc_    (structure macros)
  12. *                 ¯         ¯ ¯
  13. *    Macros        PortStruct_,PortStructDX_, MSGStruct_, IOStruct_
  14. *            BrokerStruct_, AppIconStruct_, ImageStruct_,
  15. *            DiskObjectStruct_
  16. *
  17. ;------------------------------------------------------------------------------
  18.  
  19. ;------------------
  20.     ifnd    stc_defined
  21. stc_defined    =1
  22.  
  23. ;------------------
  24.  
  25. ;------------------------------------------------------------------------------
  26. *
  27. * PortStruct_    Public port structure with PA_SIGNAL as flag and a free name.
  28. * PortStructDX_    Public port structure with PA_SIGNAL as flag and NO NAME.
  29. *
  30. * USAGE        PortStruct_    ('port name')
  31. *        PortStructDX_
  32. *
  33. ;------------------------------------------------------------------------------
  34.  
  35. ;------------------
  36. PortStruct_    macro    
  37.  
  38. ;------------------
  39. ; Put struct and insert name.
  40. ;
  41.     ds.b    10,0
  42.  
  43.     ifeq    NARG,0
  44.     dc.l    0        ;no name
  45.     else
  46.     dc.l    *+24        ;pointer to name => RELOC32!
  47.     endif
  48.  
  49.     dc.b    0,0        ;flag,sigbit
  50.     dc.l    0        ;sigtask
  51.     ds.b    14,0        ;MSG list
  52.     
  53.     ifne    NARG,0
  54.     dc.b    \1,0
  55.     even
  56.     endif
  57.  
  58.     endm
  59.  
  60.  
  61. ;------------------
  62. PortStructDX_    macro    
  63.  
  64.     IFNE    NARG,0
  65.     FAIL    structs.r error: PortStructDX_ does not accept a port name.
  66.     ENDIF
  67.  
  68. ;------------------
  69. ; Put struct and insert name.
  70. ;
  71.     dx.b    10
  72.     dx.l    1        ;no name
  73.     dx.b    2        ;flag,sigbit
  74.     dx.l    1        ;sigtask
  75.     dx.b    14        ;MSG list
  76.  
  77.     endm
  78. ;------------------
  79.  
  80.  
  81. ;------------------------------------------------------------------------------
  82. *
  83. * MSGStruct_    Message structure with extension.
  84. *
  85. * USAGE        MSGStruct_    (# of additional bytes)
  86. *
  87. ;------------------------------------------------------------------------------
  88.  
  89. ;------------------
  90. MSGStruct_    macro    
  91.  
  92. ;------------------
  93. ; Build message struct and extension space.
  94. ;
  95.     dc.l    0,0
  96.     dc.b    5,0    ;type message
  97.     dc.l    0    ;no name...
  98.     dc.l    0    ;reply port
  99.  
  100.     ifeq    NARG,0
  101.     dc.w    20
  102.     else
  103.     dc.w    20+\1
  104.     ds.b    \1,0
  105.     even
  106.     endif    
  107.  
  108.     endm
  109.  
  110. ;------------------
  111.  
  112. ;------------------------------------------------------------------------------
  113. *
  114. * IOStruct_    Input/Output Structure.
  115. *
  116. * USAGE        IOStruct_    (# of extension bytes)
  117. *
  118. ;------------------------------------------------------------------------------
  119.  
  120. ;------------------
  121. IOStruct_    macro    
  122.  
  123. ;------------------
  124. ; Build IO struct and extension space.
  125. ;
  126.     ds.b 48,0
  127.     ifne    NARG,0
  128.     ds.b    \1,0
  129.     endif    
  130.     endm
  131.  
  132. ;------------------------------------------------------------------------------
  133. *
  134. * BrokerStruct_    
  135. *
  136. * USAGE        BrokerStruct_ <Name:24>,<Title:40>,Uniqe,Flags,Pri,<Desc:40>
  137. *
  138. * DEFAULT    Uniqe:    NBU_NOTIFY!NBU_UNIQUE
  139. *        Flags:    COF_SHOW_HIDE
  140. *        Pri:    0
  141. *
  142. *        :24/:40    max. allowd length of text
  143. *
  144. ;------------------------------------------------------------------------------
  145.  
  146. ;------------------
  147. BrokerStruct_    MACRO
  148.  
  149. ;------------------
  150. ;Build a NewBroker Structure
  151. ;
  152. .\@:    dc.b    NB_VERSION        ; Commodities-Version (NEEDED)
  153.     dc.b    0            ; Reserve1
  154.     dc.l    .BrokerName\@        ; Name of broker (for Exchange-Prg)
  155.     dc.l    .BrokerTitle\@        ; Title   (for Exchange-Prg)
  156.     dc.l    .BrokerDesc\@        ; Broker-Description (for Exchange-Prg)
  157.     IFC    '','\3'
  158.     dc.w    NBU_NOTIFY!NBU_UNIQUE    ; Notify broker, we are unique (default)
  159.     ELSE
  160.     dc.w    \3            ; Uniqe
  161.     ENDC
  162.     IFC    '','\4'
  163.     dc.w    COF_SHOW_HIDE        ; Flags: We can be hidden/shown
  164.     ELSE
  165.     dc.w    \4            ; Flags: \4
  166.     ENDC
  167.     IFC    '','\5'
  168.     dc.w    0            ; Pri of broker plus an alignment byte
  169.     ELSE
  170.     dc.b    \5,0            ; Pri of broker plus an alignment byte
  171.     ENDC
  172.     dc.l    0            ; Port-Pointer
  173.     dc.w    0            ; Reserved Channel            
  174.     IIF    (*-.\@)-NewBroker_SIZEOF FAIL ** NewBroker structure corrupt **
  175.  
  176. .BrokerName\@:
  177.     dc.b    \1,0
  178.     even
  179. .BrokerTitle\@:
  180.     dc.b    \2,0
  181.     even
  182. .BrokerDesc\@:
  183.     dc.b    \6,0
  184.     even
  185.  
  186.     ENDM
  187.  
  188.  
  189. ;------------------------------------------------------------------------------
  190. *
  191. * AppIconStruct_    - AppIcon structure
  192. * DiskObjectStruct_    - DiskObject structure
  193. * ImageStruct_        - AppIcon Image structure
  194. *
  195. * USAGE:
  196. *
  197. * AppIconStruct_ <name>,<pointer to image structure>,width,height[,Xpos,Ypos]
  198. * AppIconImageStruct_  [<pointer to image data>,<width>,<height>,<depth>]
  199. *
  200. * width, height        of icon hit-box (must be >= image dimensions)
  201. * Xpos,Ypos        of icon  (default: NO_ICON_POSITION (recommended))
  202. *
  203. *
  204. * tip from C=:
  205. *
  206. * (an easy way to create one of these (a DiskObject) is to create an icon
  207. *  with the V2.0 icon editor and save it out.  Your application can then
  208. *  call GetDiskObject on it and pass that to AddAppIcon.)
  209. *
  210. ;------------------------------------------------------------------------------
  211.  
  212.         RSRESET
  213. app_AppIconDef    RS.W    2
  214.  
  215.         RS.L    1
  216.         RS.W    2
  217. app_ai_Width    RS.W    1
  218. app_ai_Height    RS.W    1
  219. app_ai_Flags    RS.W    1
  220.         RS.W    2
  221. app_ai_pic    RS.L    1
  222.         RS.L    4
  223.         RS.W    1
  224.         RS.L    1
  225.  
  226.         RS.B    2
  227.         RS.L    2
  228. app_ai_Xpos    RS.L    1
  229. app_ai_Ypos    RS.L    1
  230.         RS.L    3
  231. app_AppPort    RS.L    1        ;AppIcon.r extended datas
  232. app_AppIcon    RS.L    1
  233. app_AppImage    RS.L    1        ;might only be set by InitAppIconImage!
  234. app_AppText    RSVAL
  235. app_SIZEOF    RSVAL
  236.  
  237.  
  238. ;------------------
  239.         RSRESET
  240.         RS.W    2        ;Image Structure
  241. app_am_Width    RS.W    1
  242. app_am_Height    RS.W    1
  243. app_am_Depth    RS.W    1
  244. app_am_Image    RS.L    1
  245. app_am_PlanePick RS.B    1
  246.         RS.B    1
  247.         RS.L    1
  248. app_am_SIZEOF    RSVAL
  249.  
  250.  
  251. ;------------------
  252. DiskObjectStruct_    MACRO
  253.         AppIconStruct_ \1,\2,\3,\4,\5,\6
  254.         ENDM
  255.  
  256. ;------------------
  257. AppIconStruct_    MACRO
  258. ;
  259. ; DiskObject structure (refer to AddAppIconA in autodocs/wb.doc).
  260. ;
  261.         dc.w    0,0            ;do_Magic, do_Version
  262.  
  263.         dc.l    0            ;gadget structure!
  264.         dc.w    0,0
  265.         IFNC    '',\3
  266.         dc.w    \3            ;width
  267.         ELSE
  268.         dc.w    0
  269.         ENDC
  270.         IFNC    '',\4
  271.         dc.w    \4            ;height
  272.         ELSE
  273.         dc.w    0
  274.         ENDC
  275.         dc.w    0            ;Flags (NULL or GADGHIMAGE=2)
  276.         dc.w    0,0
  277.         IFNC    '',\2
  278.         dc.l    \2            ;appicon pic
  279.         ELSE
  280.         dc.l    0            ;no appicon pic
  281.         ENDC
  282.         dc.l    0            ;select render - pointer to
  283.         dc.l    0,0,0            ;                alternate Image
  284.         dc.w    0
  285.         dc.l    0
  286.  
  287.         dc.b    0,0
  288.         dc.l    0
  289.         dc.l    0
  290.         IFNC    '',\5
  291.         dc.l    \5
  292.         ELSE
  293.         dc.l    $80000000    ;x position of icon (NO_ICON_POSITION)
  294.         ENDC
  295.         IFNC    '',\6
  296.         dc.l    \6
  297.         ELSE
  298.         dc.l    $80000000    ;y position of icon (NO_ICON_POSITION)
  299.         ENDC
  300.         dc.l    0
  301.         dc.l    0
  302.         dc.l    0
  303.  
  304. .appport\@:    dc.l    0            ;reserved for AppIconPort
  305. .appdef\@:    dc.l    0            ;AppIcon definition
  306. .appimage\@:    dc.l    0            ;pointer to AppIcon Memory
  307.  
  308. .apptext\@:    dc.b    \1,0
  309.         even
  310.  
  311.         ENDM
  312.  
  313.  
  314. ;------------------
  315. ImageStruct_    MACRO
  316. ;
  317. ; Image structure (refer to intiuition.i for more details)
  318. ;
  319.         dc.w    0
  320.         dc.w    0
  321.         IFNC    '',\2
  322.         dc.w    \2        ;width
  323.         ELSE
  324.         dc.w    0
  325.         ENDC
  326.         IFNC    '',\3
  327.         dc.w    \3        ;height
  328.         ELSE
  329.         dc.w    0
  330.         ENDC
  331.         IFNC    '',\4
  332.         dc.w    \4        ;depth
  333.         ELSE
  334.         dc.w    0
  335.         ENDC
  336.         IFNC    '',\1
  337.         dc.l    \1
  338.         ELSE
  339.         dc.l    0
  340.         ENDC
  341.         IFNC    '',\4
  342.         dc.b    (1<<\4)-1    ;planepick (planemask)
  343.         ELSE
  344.         dc.b    0
  345.         ENDC
  346.         dc.b    0
  347.         dc.l    0
  348.         ENDM
  349.  
  350.  
  351. ;--------------------------------------------------------------------
  352.  
  353. ;------------------
  354.     endif
  355.  
  356.  end
  357.  
  358.